package br.com.nemesis.controle;

import br.com.nemesis.dao.ClienteDAO;
import br.com.nemesis.excecao.PersistenciaExcecao;
import br.com.nemesis.jsf.util.FacesUtil;
import br.com.nemesis.modelo.Bairro;
import br.com.nemesis.modelo.Cliente;
import br.com.nemesis.web.Sessao;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;

@ManagedBean(name = "clienteListarControle")
@RequestScoped
public class ClienteListarControle implements IListar<Cliente> {

    private String nome;
    
    @ManagedProperty(value = "#{sessao}")
    private Sessao sessao;

    public List<Cliente> getListar() {
        List<Cliente> clientes = null;
        try {
            ClienteDAO clienteDAO = new ClienteDAO();
            clientes = clienteDAO.listar(nome, sessao.getBairro(), sessao.getCidade());
            clienteDAO = null;
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        return clientes;
    }

    public String filtrar() {
        return null;
    }

    public String incluir() {
        return "/cliente/editar.nms";
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public List<SelectItem> getBairros() {
        List<SelectItem> bairros = new ArrayList<SelectItem>();
        if (sessao.getCidade().getBairros() != null && sessao.getCidade().getBairros().size() > 0) {
            for (Bairro b : sessao.getCidade().getBairros()) {
                bairros.add(new SelectItem(b, b.getNome()));
            }
        }
        return bairros;
    }

    public void setSessao(Sessao sessao) {
        this.sessao = sessao;
    }
}